import { Injectable } from '@nestjs/common';
import { I18nService } from 'nestjs-i18n';

@Injectable()
export class AppI18nService {
    constructor(private readonly i18n: I18nService) { }

    /**
     * 获取翻译文本
     * @param key 翻译键
     * @param args 参数对象
     * @param lang 语言代码
     * @returns 翻译后的文本
     */
    translate(key: string, args?: any, lang?: string): string {
        return this.i18n.translate(key, { args, lang });
    }

    /**
     * 获取成功消息
     * @param key 消息键
     * @param args 参数
     * @param lang 语言代码
     * @returns 成功消息
     */
    getSuccessMessage(key: string, args?: any, lang?: string): string {
        return this.translate(key, args, lang);
    }

    /**
     * 获取错误消息
     * @param key 错误键
     * @param args 参数
     * @param lang 语言代码
     * @returns 错误消息
     */
    getErrorMessage(key: string, args?: any, lang?: string): string {
        return this.translate(key, args, lang);
    }

    /**
     * 获取验证错误消息
     * @param key 验证键
     * @param args 参数
     * @param lang 语言代码
     * @returns 验证错误消息
     */
    getValidationMessage(key: string, args?: any, lang?: string): string {
        return this.translate(`validation.${key}`, args, lang);
    }

    /**
     * 获取认证相关消息
     * @param key 认证键
     * @param args 参数
     * @param lang 语言代码
     * @returns 认证消息
     */
    getAuthMessage(key: string, args?: any, lang?: string): string {
        return this.translate(`auth.${key}`, args, lang);
    }

    /**
     * 获取 KYC 相关消息
     * @param key KYC 键
     * @param args 参数
     * @param lang 语言代码
     * @returns KYC 消息
     */
    getKycMessage(key: string, args?: any, lang?: string): string {
        return this.translate(`kyc.${key}`, args, lang);
    }

    /**
     * 获取用户相关消息
     * @param key 用户键
     * @param args 参数
     * @param lang 语言代码
     * @returns 用户消息
     */
    getUserMessage(key: string, args?: any, lang?: string): string {
        return this.translate(`user.${key}`, args, lang);
    }

    /**
     * 获取 API 相关消息
     * @param key API 键
     * @param args 参数
     * @param lang 语言代码
     * @returns API 消息
     */
    getApiMessage(key: string, args?: any, lang?: string): string {
        return this.translate(`api.${key}`, args, lang);
    }
}
